package com.geekbang;

import com.geekbang.supermarket.LittleSuperMarket;
import com.geekbang.supermarket.MerchandiseV2;

public class ObjectEqualsAppMain {
    public static void main(String[] args) {

        int defaultCount = 200;
        LittleSuperMarket superMarket = new LittleSuperMarket("大卖场",
            "世纪大道1号", 500, 600, defaultCount);

        MerchandiseV2 t0 = new MerchandiseV2(
            "商品" + 0,
            "ID" + 0,
            defaultCount,
            1999,
            999
        );

        MerchandiseV2 t10 = new MerchandiseV2(
            "商品" + 10,
            "ID" + 10,
            defaultCount,
            1999,
            999
        );

        MerchandiseV2 t100 = new MerchandiseV2(
            "商品" + 100,
            "ID" + 100,
            defaultCount,
            1999,
            999
        );

        // >> TODO 看看结果为什么是这样？
        System.out.println(superMarket.findMerchandise(t0));
        System.out.println(superMarket.findMerchandise(t10));
        System.out.println(superMarket.findMerchandise(t100));
        // true
        // false
        // false
        // TODO 取决于 Phone里面的getName方法是多态，因此equals不一样
        // TODO 如果equals不重写的话，比的是 == ，地址
        // TODO 如果 findMerchandise 用 == 而不是 equals的话，则都是false，因为 == 比较的是地址是否相同


// TODO
//         == 的作用：
// TODO　　   基本类型：比较的就是值是否相同
// TODO　　   引用类型：比较的就是地址值是否相同
// TODO    equals 的作用:
// TODO　　    引用类型：默认情况下，比较的是地址值。
// TODO       注：不过，我们可以根据情况自己重写该方法。一般重写都是自动生成，比较对象的成员变量值是否相同

    }

}
